package cn.powerone.scm.domain;

import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.powerone.common.annotation.Excel;
import cn.powerone.common.core.domain.BaseEntity;

/**
 * 发票对象 scm_invoice
 * 
 * @author PowerOne
 * @date 2025-08-22
 */
public class ScmInvoice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    /** 订单类型 */
    @Excel(name = "订单类型")
    private Integer orderType;

    /** 客户供应商ID */
    @Excel(name = "客户供应商ID")
    private Long customerSupplierId;

    /** 发票类型 */
    @Excel(name = "发票类型")
    private Integer invoiceType;

    /** 税前金额 */
    @Excel(name = "税前金额")
    private BigDecimal moneyIncludeTax;

    /** 税后金额 */
    @Excel(name = "税后金额")
    private BigDecimal moneyExcludeTax;

    /** 税收金额 */
    @Excel(name = "税收金额")
    private BigDecimal moneyOfTax;

    /** 税率 */
    @Excel(name = "税率")
    private Long taxRate;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 开票附件 */
    @Excel(name = "开票附件")
    private String attachmentUrl;

    /** 0待审核、1审核中、2审核通过、3审核未通过 */
    @Excel(name = "0待审核、1审核中、2审核通过、3审核未通过")
    private Integer checkStatus;

    /** 状态0未开票1开票中2已开票3开票失败 */
    @Excel(name = "状态0未开票1开票中2已开票3开票失败")
    private Integer status;

    /** 发票日期 */
    @Excel(name = "发票日期")
    private Date invoiceDate;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setOrderType(Integer orderType) 
    {
        this.orderType = orderType;
    }

    public Integer getOrderType() 
    {
        return orderType;
    }
    public void setCustomerSupplierId(Long customerSupplierId) 
    {
        this.customerSupplierId = customerSupplierId;
    }

    public Long getCustomerSupplierId() 
    {
        return customerSupplierId;
    }
    public void setInvoiceType(Integer invoiceType) 
    {
        this.invoiceType = invoiceType;
    }

    public Integer getInvoiceType() 
    {
        return invoiceType;
    }
    public void setMoneyIncludeTax(BigDecimal moneyIncludeTax) 
    {
        this.moneyIncludeTax = moneyIncludeTax;
    }

    public BigDecimal getMoneyIncludeTax() 
    {
        return moneyIncludeTax;
    }
    public void setMoneyExcludeTax(BigDecimal moneyExcludeTax) 
    {
        this.moneyExcludeTax = moneyExcludeTax;
    }

    public BigDecimal getMoneyExcludeTax() 
    {
        return moneyExcludeTax;
    }
    public void setMoneyOfTax(BigDecimal moneyOfTax) 
    {
        this.moneyOfTax = moneyOfTax;
    }

    public BigDecimal getMoneyOfTax() 
    {
        return moneyOfTax;
    }
    public void setTaxRate(Long taxRate) 
    {
        this.taxRate = taxRate;
    }

    public Long getTaxRate() 
    {
        return taxRate;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }
    public void setAttachmentUrl(String attachmentUrl) 
    {
        this.attachmentUrl = attachmentUrl;
    }

    public String getAttachmentUrl() 
    {
        return attachmentUrl;
    }
    public void setCheckStatus(Integer checkStatus) 
    {
        this.checkStatus = checkStatus;
    }

    public Integer getCheckStatus() 
    {
        return checkStatus;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    public void setInvoiceDate(Date invoiceDate)
    {
        this.invoiceDate = invoiceDate;
    }

    public Date getInvoiceDate()
    {
        return invoiceDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("orderId", getOrderId())
            .append("orderType", getOrderType())
            .append("customerSupplierId", getCustomerSupplierId())
            .append("invoiceType", getInvoiceType())
            .append("moneyIncludeTax", getMoneyIncludeTax())
            .append("moneyExcludeTax", getMoneyExcludeTax())
            .append("moneyOfTax", getMoneyOfTax())
            .append("taxRate", getTaxRate())
            .append("remarks", getRemarks())
            .append("attachmentUrl", getAttachmentUrl())
            .append("checkStatus", getCheckStatus())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
